EDAS (Z80 EDAS For MZ−80B Ver1.1) ――――――――――――――――――――――――――――――――――――――― I/O 1982年 7月号掲載 MZ−80B マシン語 012A0H−0328FH コールドスタート 012A3H ホット スタート 012A0H 起動方法 モニタからL ――――――――――――――――――――――――――――――――――――――― ===================   1. 概   要 =================== 本プログラムはMZ−80Bにより ザイログ形式のニモニックで記述された ソース・プログラムを編集、アセンブルするものです。 編集コマンドによりメモリ上にソース・プログラムを形成し、 アセンブル・コマンドでメモリ上のソース・プログラムをアセンブルするので 内部処理は2パスですが、実際の操作は1パスで行なえます。 メモリに余裕があれば、ソース・プログラム、オブジェクト・プログラムを オンメモリでデバッグできるので、誤りがあった場合 ソース・プログラムの修正、再アセンブルが直ちに行なえます。 ソース・プログラムをメモリに持つということは、メモリ容量により アセンブルできるプログラムの規模が制限される欠点もありますが、 52Kバイト弱の空メモリがあるので、4,500ステートメント程度の ソース・プログラムまでアセンブルできます。 EDASの主な機能は以下のとおりです。 (1)キーボード入力によりソース・プログラム作成 (2)ソース・プログラム・テープの作成、読み込み (3)任意ステートメントおよびストリング・サーチによる    特定ステートメントの訂正 (4)ステートメント単位の移送 (5)ソース・プログラム・リスト、アセンブル・リスト、    ラベル・テーブル・リストの作成 (6)オブジェクト・プログラム・テープの作成、読み込み (7)アセンブル時、オブジェツト・コードを直接メモリに格納 (8)Z80CPUの全レジスタ値を表示するブレーク機能 ===================   2. アセンブリ言語 =================== 2.1 文字  20H〜F7Hの特殊文字、数字、英字、カタカナ、グラフィックなど  216種類 の文字を使用します。  コメント欄ではこのすべての文字が使えます。  (1)ニモニック、レジスタ名、コンディション     41H〜5AHの英文字(A〜Z)を使います。  (2)数字     a)2進数:0,1     b)10進数:0,1,2,3,4,5,6,7,8,9     c)16進数:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F  (3)ラベル     3FH〜F7Hのいずれかの文字で始まり、     2文宇目以後は、これに30H〜39Hの数字(0〜9)を     含んでもかまいません。     1ステートメントに収まる範囲内であるならば、     文字数に制限はありません。  (4)演算子     +(加算)、−(減算)、*(乗算)、/(除算を行ない、商を得る)、     %(除算を行ない、余りを得る)、!(論理和)、&(論理積) 2.2 定数  定数はそれ自身で定まる値を持つもので数字や文字の列で表現されます。  数字だけで構成される数字定数、文字で構成される文字定数とがあります。  (1)2進定数     2進定数は2進数文字で構成され、最後に“B”を付加します。       例:1011B  (2)10進定数     10進定数は10進数文字で構成されます。       例:4096  (3)16進定数     16進定数は、16進数文字で構成され、最後に“H”を付加します。     A〜Fの文字で始まる場合、ラベルと区別するために     最初に“0”を付加します。       例:1234H、0F57H  (4)文字定数     文字定数は引用符(’)で囲まれた文字列を値として持ちます。     引用符を文字として確保するときは、引用符を2個続けます。       例:’ABイロハ’,’XΥ’’Z’ 2.3 ステートメント  1ステートメントは1行79カラムに収まるように書いてください。  ステートメントは  ラベル欄、コード欄、オペランド欄、コメント欄の4つに分かれていますが、  フリーフォーマットなので各欄はどのカラムから始めてもかまいません。  何も記述しないヌルステートメント、ラベルだけのステートメント、  コメントだけのステートメントなども記述できます。  ●1つ以上のオペランドがある場合   〔▲ラベル▲:〕▲コード△オペランド▲〔,▲オペランド〕〔▲;コメント][CR]  ●オペランドがない場合   〔▲ラベル▲:〕▲コード▲〔;コメント〕[CR]  ●EQUステートメント   ▲ラベル△EQU△オペランド▲〔;コメント〕[CR]   〔 〕内の記述は任意。      ▲の位置にスペースがあってもよい。      △の位置に1個以上のスペースが必要。   コロン  (:)はラベルとコードの区切りとして使う。   カンマ  (,)はオペランドの区切りとして使う。   セミコロン(;)はコメントの始まりを表す。 2.3.1 ラベル欄  ラベルは命令で参照するため各ステートメントにつける名前で、  必要により記述しラベルの後にコロン(:)を付けます。  擬似命令であるEQUステートメントの場合ラベルは省略できません。  この場合ラベルの後にはコロンでなくスペースを入れます。  命令、擬似命令、レジスタ名はラベルとして使えません。 2.3.2 コード欄  コード欄には実行すべきマシン命令、擬似命令を記述します。  各命令はザイログ仕様のニモニックです。 2.3.3 オペランド欄  コード欄に記述された命令の要求するレジスタ名、コンディション、  データなどのオペランドを書きます。  複数のオペランドがある場合コンマ(,)で区切ります。  オペランド・データは表現式により記述します。  (1)表現式   表現式は数値定数(2進、10進、16進)、文字定数、ラベル、   ※カレント・プログラム・カウンタ($)などを   演算子で結合したものです。   演算は常に左から実行され演算子による優先順位はありません。   また、( )による優先順位の変更もできません。    ※カレント・プログラム・カウンタ:命令の割り付けられたアドレスを                     値とするもので“$”で表す。    例 ORG 1000H      CI EQU 13      LD HL,$+1100B−512*0FAH%’ABC’/CI!             〜     〜   〜    〜     〜  〜      0AA00H&1234H            〜      (注1)〜部は演算子。      (注2)表現式中の文字定数は後から2文字          (16ビット、例では’BC’)が演算対象となる。      (注3)例は、LD HL,0230Hと同等です。   レジスタ名、コンディション以外はすべて表現式で記述できます。    例 TDAT EQU 54           BIT TDAT&7,A  ;=BIT 6,A           RST TDAT&38H  ;=RST 30H  (2)相対ジャンプ命令   相対ジャンプ命令(JR、DJNZ)のジャンプ先を示す   オペランドが以下の形式であれば、アセンブラが2番地の補正を行ないます。    JR ラベル名 OPt 数値定数    JR $ OPt 数値定数     OPt:演算子   ラベル名、$を2つ以上含む場合および文字定数を含む表現式であると   演算結果がそのままオペランド値となります。    例(1) ORG 10H         JR $+20H ;マシン語 181E(補正あり)         ORG 10H     (2) JR $+’’  ;マシン語 1830(補正なし)        (2)の文字定数はASCIIコードで20Hなので        みかけ上(1)と同じですが生成されるマシン語は異なる。 2.4 擬似命令  擬似命令はORG、EQU、DEFW、DEFB、DEFS、DEFM、  SKIP、ENDの8種類があります。  (1)ORG(ORIGIN)     フォーマット 〔ラベル:〕ORG データ     オペランドの値をアセンブル開始アドレスとして設定します。     オペランドの記述にラベルが含まれている場合は、     そのラベルは既に定義されたものでなければなりません。     本命令を省略すれば0番地をアセンブル開始アドレスとします。  (2)EQU(EQUATE)     フォーマット  ラベル EQU データ     オペランドの値をラベルに割り付けます。     オペランドの記述にラベルが含まれている場合は、     そのラベルはすでに定義されたものでなければなりません。  (3)DEFW(DEFINE WORD)     フォーマット 〔ラベル:〕DEFW データ,データ…     オペランド値を16ビット・データとして、     下位8ビット,上位8ビットの順にメモリに割り付けます。     コンマ(,)で区切り、任意数のオペランドが記述できます。  (4)DEFB(DEFINE BYTE)     フォーマット 〔ラベル:〕DEFB データ,データ…     オペランド値を8ビット・データとしてメモリに割り付けます。     コンマ(,)で区切り任意数のオペランドが記述できます。  (5)DEFS(DEFINE STORAGE)     フォーマット 〔ラベル:〕DEFS データ     オペランドで指定されたバイト数のメモリを確保します。     オペランドの記述にラベルが含まれている場合は、     そのラベルはすでに定義されたものでなければなりません。  (6)DEFM(DEFINE MEMORY)     フォーマット 〔ラベル:〕DEFM ’文字列’     オペランドに記述された文字定数(引用符で囲まれた文字列)を     メモリに割り付けます。     オペランドに文字定数以外は記述できません。     例 DFFM ’ABCD’          ;41424344       DEFB ’A’,’B’,’C’,’D’ ;   〃       DEFW ’BA’,’DC’       ;   〃       上記の3つのステートメントはすべて同一のコードを       メモリに割り付ける。  (7)SKIP     フォーマット 〔ラベル:〕SKIP〔データ〕     アセンブル・リスト出力時、改ページを行ない見出しを印字します。     オペランドの記述はオブジェクト・コード生成に影響を与えませんが、     未定義ラベルを記述すればラベル・エラーとなり、     コンマ(,)で区切り3つ以上のデータを記述すれば     Syntax Errとなります。     文字定数によリコメントを記述してください。     例 SKIP ’Main Program’  (8)END     フォーマット 〔ラベル:〕END〔データ〕     一般にはアセンブラにアセンブル終了を指示する命令ですが、     EDASは指定ステートメントをアセンブルする方式なので     無意味な命令です。     オペランドの記述に関してはSKIP命令と同じです。     例 END ’Program −1 END’ ===================   3. 操 作 法 =================== EDASプログラムの操作法について述べます。 3.1 起動  EDASのコールド・スタート・アドレスは12A3H番地なので、  プログラム・ロード後このアドレスから起動してください。  EDASがコールド・スタートすると、画面をクリア後  下記のメッセージが出力されます( ̄ ̄ ̄部は出力されない)。   Z−80 EDAS For MZ−80B Ver.1.1   Buffer Area−3500,FFBF[CR]                ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄  ソース・プログラム、ラベル・テーブル、オブジェクト・コードなどを  格納するためのバッファ・エリアを指定します。  開始アドレス、終了アドレスの順に16進数で入力します。  16進数以外を入力すると再度“Buffer Area−”の  メッセージが出力されます。  また16進数は何桁入力しても下位4桁を有効データとして扱います。  バッフア・エリアで指定された範囲外に  ソース・プログラム、ラベル・テーブルが格納されることはありません  (オブジェクト・コードに関してはASコマンドの項参照)。  3500番地より前は、モニタ、EDASプログラムが  格納されているので、指定しないでください。  またFFFFHにスタック・ポインタが設定されるので、  FFBFFH番地以後も指定しないでください。  EDASのホット・スタート・アドレスは12A0番地なので、  モニタに戻った後に再起動する場合このアドレスより起動してください。 3.2 コマンド説明  EDASのコマンドは全部で20種あり、  コマンド待ちのとき“>”が表示されます。  コマンド・パラメータのあるコマンドを入力すると“:”が表示され、  コマンド・パラメータの入力待ちとなります。  コマンドおよびパラメータの入力途中で[BREAK]キーを入力すれば  コマンド待ちになります。  また、コマンド・エラー、パラメータ・エラーの場合“?”を表示後  コマンド待ちとなります。  コマンドの実行は[CR]キーで開始されます。 3.2.1 EDAS制御コマンド (1)モニタ起動  >N[CR]   SB−1520モニタをホット・スタートします。 (2)モード設定  >M[CR]   EDASの実行モードを設定するものです。   以下のメッセージに従って、   [Y]または[N]を入力してモードを設定してください。   Y/N以外([CR]のみの入力は次のモード設定にスキップ)を入力すれば   パラメータ・エラーとなりコマンド待ちに、   [BREAK]キーを入力すればコマンド待ちになります。   これらの場合、設定されたモードは変わりません。    Printer Output?     ソース・プログラム・リスト、アセンブル・リスト、     ラベル・テーブル・リスト、オブジェクト・コード・リストを     プリンタに出力する場合は[Y]を入力します。    Syntax Check?     ソース・ステートメントをキーボードまたはカセットテープより     入力時、文法チェックを行なう場合は[N]を入力します。     文法チェック・モードを設定しておくと、     1ステートメント入力されるごとに文法チェックを行ない、     誤りがあると“Syntax Err” のメッセージを出力します。     キーボード入力時ならば、入力したステートメントが     再表示され訂正が可能ですが、     カセットテープよりの入力時はコマンド待ちとなります。     [N]を入力すれば文法チェックは行なわれないので     単なるエディタとしても使用できます。    40 Character Display?     CRT画面の表示文字数を設定します。     [Y]を入力すれば40字モードに、     [N]を入力すれば80字モードとなります。    Statement Number Display?     Lコマンド実行時、出力リストにステートメント番号を付加する場合、     [Y]を入力します。 3.2.2 編集コマンド  コマンド形式 >コマンド:P1,P2,P3[CR]  本コマンドには、コマンド・パラメータの指定が必要です。  パラメータP1,P2,P3は10進数で入力し、  処理ステートメントを指定します。  また10進数のかわりに“,”、“/”の文字により  EDASの持つポインタ値を参照できます。  “,”は前回のコマンドで最後に処理したステートメント番号に1を加え値で、  “/”は入力済み最終ステートメント番号の値です。  またポインタ±10進数の指定も可能です。  パラメータ数はコマンドにより異なりますが、  余分なパラメータは無視されます。  ただし、4つ以上パラメータを入力すれば  パラメータ・エラーとなります。  入力済みステートメント数より大きい値など  不合理なパラメータを入力すれば  同様にパラメータ・エラーとなります。  以後のコマンド説明中〔 〕は  パラメータが省略できることを示しています。  (1)キーボード入力   >I:〔P1〕[CR]     パラメータで指定する位置に、     キーボードより入力されるステートメントを順次挿入します。     パラメータを省略すれば最終ステートメントの次より     入力されます(ステートメントが未入力であれば1ラインより入力開始)。     コマンドの終了は[BREAK]キー入力か、バッファがいっぱいになり     “Buffer Full”のメッセージが出力された場合です。     キーボード入力時、次の編集キーが使用できます。      [→]  カーソルを右に進める。          ただし最終文字以後には進まない。      [←]  カーソルを左に進める。          ただし第一文字以前には進まない。      [INS]カーソル位置より右の文字を順繰りに右に進め、          カーソル位置にスペースを入力する。      [DEL]カーソル位置より1つ左の文字を削除し          カーソルより右の文字を順繰りに左に進める。      [TAB]カーソル位置より8の倍数カラムとなるまで          スペースを入力する。      [↓]  カーソル位置より右の文字をすべて削除し、          1ステートメントの入力を終了させる。        [CR] 1ステートメントの入力を終了させる。  (2)ソース・プログラム・テープ読み込み >R:〔P1〕[CR]     パラメータで指定する位置にカセットテープにより読み込まれる     ステートメントを順次挿入します。     パラメータを省略すれば最終ステートメントの次より入力されます     (ステートメントが未入力であれば1ラインより入力開始)。     読み込みの一時停止は[SPACE]キー入力     (CRTにステートメントが表示されつつあるときのみ有効)で行なわれ、     再度のスペース・キー入力で読み込みを再開します。     コマンドの終了は[BREAK]キー入力     (このときMT動作中であれば      “MT Read Err”のメッセージを出力)、     ソース・プログラム・テープ読み込み終了、バッファがいっぱいになった     (“Buffer Full”のメッセージ出力)、カセット・テープの     リード・エラー発生(“MT Read Err”のメッセージ出力)     およびSyntax Checkモード指定中の     Syntax Err検出などの場合です。  (3)訂正 >C:〔P1〕[CR]     パラメータで指定するステートメントの訂正を行ないます。     コマンドを投入すると訂正対象ステートメントが表示されますので     ※編集キーにより訂正を行なってください。     [CR]または[↓]キー入力で訂正は有効となり     次のステートメントが表示され訂正対象ステートメントとなります。     訂正の必要のないステートメントであれば     [CR]または[↓]キーのみ入力してください。     パラメータを省略すれば、1ラインより訂正可能となります。     本コマンド実行中もSyntax Checkは可能です。     コマンドの終了は、[BREAK]キー入力、     最終ステートメントの訂正終了、     およびバッファがいっぱいになった     (“Buffer Full”のメッセージ出力)ときなど     の場合です。         ※編集キーについては“I”コマンドの項参照  (4)削除 >D:〔P1〔,P2〕〕[CR]     P1〜P2ステートメントを削除します。     P1のみ指定すればP1ステートメントが削除されます。     P1,P2共に省略すれば全ステートメントの削除指定となります。     このとき“Delete All Line, 0K? Y/N−”の     メッセージが出力されますので     削除しても良い場合は[Y]を、     削除したくない場合は[N]を入力します     (Y、N以外はパラメータ・エラー)。     コマンドの終了は[BREAK]キー入力または削除処理終了時などです。  (5)サーチによる訂正 >S:〔P1〔,P2〕〕[CR]:文字列[CR]     P1〜P2ステートメントの範囲で、     文字列で指定されたものと同一の文字列のあるステートメントを     見つけ出し、訂正対象ステートメントとして表示します。     訂正が終了すれば、次の訂正対象ステートメントのサーチが行なわれます。     すなわち特定ステートメントのみ訂正するためのコマンドです。     P1のみ指定すれば、P1ステートメントがサーチ対象となり、     全パラメータ省略すれば全ステートメントがサーチ対象となります。     サーチできるのは15文字以下の文字列であり、     16文字以上の入力および[TAB]以外     (注:8の倍数カラムまで連続したスペースは        バッファ内で“TAB”コードに変換されます)     の特殊文字入力はパラメータ・エラーとなります。     本コマンド実行中でも“Syntax Check”は可能です。     コマンドの終了は[BREAK]キー入力および     指定ステートメントまでのサーチ終了時です。  (6)ソース・プログラム・リスト出力 >L:〔P1〔,P2〕〕[CR]     P1〜P2ステートメントを出力し、     ソース・プログラム・リストを作成します。     P1のみ指定すればP1ステートメントが出力され、     P1、P2共に省略すれば全ステートメントが出力されます。     [SPACE]キー入力で出力は一時停止となり、     再度の[SPACE]キー入力で出力が再開されます。     コマンドの終了は[BREAK]キー入力     および指定ステートメントまでの出力終了時です。  (7)ソース・プログラム・テープ出力 >W:〔P1〔,P2〕〕[CR]     P1〜P2ステートメントをカセットテープに出力し、     ソース・プログラム・テープを作成します。     P1のみ指定すればP1ステートメントが出力され、     P1,P2共に省略すれば全ステートメントが出力されます。     コマンドの終了は[BREAK]キー入力および     指定ステートメントまでの出力終了時です。  (8)テープ・ベリフアイ >V:〔P1〕[CR]     P1ステートメント以後の内容とWコマンドで作成した     ソース・プログラム・テープのベリファイを行ないます。     P1を省略すれば1ステートメントからベリファイが実行されます。     ベリファイの結果一致していれば“Verify OK”を、     不一致であれば“Verify Err”のメッセージを出力します。     コマンドの終了は[BREAK]キー入力     (このときMT動作中であれば      “MT Reed Err”のメッセージ出力)、     カセットテープのリード・エラー発生     (“MT Reed Err”のメッセージ出力)、     ベリファイ終了時などです。  (9)移送 >T:P1,P2,P3[CR]     P1〜P2ステートメントをP3ステートメントの直前に移送します。     パラメータは(P1≦P2)AND((P2+1)<P3)     または(P1≦P2)AND((P1− 1)>P3)の     条件を満足しないとパラメータ・エラーとなります。     なお、P3として最終ステートメント番号+1も指定できます。     コマンドの終了は移送終了時です。 3.2.3 アセンブル・コマンド  コマンド形式 >Af:P1,P2[CR]  P1〜P2ステートメントのアセンブルを行ないます。  fはL、W、S、Tのいずれかの文字でアセンブル内容の指定を行ないます。  パラメータの指定法は3.2.2項の編集コマンドと同様なので  そちらを参照してください。  P1のみ指定すればP1ステートメントを、P1,P2共に省略すれば  全ステートメントがアセンブルされます。  アセンブル対象ステートメントの範囲外のラベルを参照する  ステートメントがあると未定義ラベル・エラーとなります。  コマンドを投入すると“EXC/Label Table GN”の  メッセージを出力し、ラベル・テーブルが作成開始されます。  ラベル・テーブル作成中ラベルに値が正しく割り付けられない  ステートメントがあると“Err in xxxx”のメッセージを出力し、  コマンドの実行を終了します。  なお、メッセージ中の××××は誤りのあるステートメント番号を表示します。  Syntax Checkモードを指定してソース・プログラムの入力を行なえば  大部分の誤りは入力時に発見できます。  ただしORG、EQU、DEFSステートメントのオペランドに  記述された未定義ラベル・エラーは  このラベル・テーブル作成時に発見されエラーとなります。  二重定義ラベルのチェックはATコマンド実行時のみ行なわれます。  その他のコマンド実行時はライン番号の小さいステートメントのラベル値を  充当してアセンブルが行なわれます。  ラベル・テーブルの作成が終了すると  以下に述べる各アセンブル処理が実行されます。  (1)アセンブル・リスト出力 >AL:〔P1〔,P2〕〕[CR]     アセンブル・リストを出力します。     リストには、下記のものが出力されます。      PAGE XXXX         :リストのページ数      E                 :エラーコード出力欄      STNR              :ステートメント番号出力欄      ADRS              :命令のアドレス、EQUステート                         メントのオペランド値      OBJECT            :オブジェクト・コード出力欄      SOURCE STATEMENTS :ソース・プログラム出力欄     エラーコードにはL、R、Vの3種類があり、     それらの意味は次のとおりです。      L:未定義ラベルの参照、        ただしORG、EQU、DEFSステートメントの場合を除く。      R:相対ジャンプの範囲を越えている。        またはオペランドの値が8ビットを越えている。      V:IM、 RST、BIT、RES、SET命令のオペランド値が        命令の要求する値でない。     アセンブルが終了すると“ERRORS xxxx”のメッセージにより     エラー数を出力します。     [SPACE]キーの入力で、リスト出力は1時停止となり、     再度の[SPACE]キー入力で出力が再開されます。     コマンドの終了は[BREAK]キー入力、     およびアセンブル終了の場合です。  (2)オブジェクト・テープ作成 >AW:〔P1〔,P2〕〕[CR]     オブジェクト・コードをカセットテープに出力し     オブジェクト・プログラム・テープを作成します。     同時にカセットテープ出力内容が表示されます。     (出力形式 例)      :10 9000 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 00 E8      || | | |_____________________________________________| |      || | | オブジェクト・コード      チェック・サム      || | +-- 未使用コード(常に00)      || +------- 格納アドレス(例では9000H番地)      |+----------- 1レコ−ドのデータ数(例では10H=16バイト)      +------------ レコード・マーク(カセットテープヘのみ出力)     アセンブルが終わると“ERRORSXXXX”のメッセージにより     エラー数を出力します。     [SPACE]キーの入力で出力は1時停止となり、     再度の[SPACE]キーの入力で出力が再開されます。     コマンドの終了は[BREAK]キー入力およびアセンブル終了の場合です。     本コマンドで作成されたオブジェクト・テープは     Oコマンドでロードされます。  (3)オブジェクト・コード格納 >AS:〔P1〔,P2〕〕[CR]     アセンブルしたオブジェクト・コードを     直接メモリに格納するためのコマンドです。     第一段階ではアセンブルしたオブジェクト・コードを     バッファ・エリアに格納します。     このときバッファ・エリアがいっぱいになるか、     格納アドレスが後退するORG命令があると     “Buffer Full”のメッセージを出力し、     アセンブルが中断されます。     第一段階が終了すると“ERRORSXXXX”メッセージにより     エラー数の表示と“Relocation Bias−”のメッセージが     出力されます。     16進数でバイアス値(下位4桁が有効)、     [CR]キーを入力すると、     ソース・プログラムのORG命令で指定された値と     バイアス値を加えたアドレスに     バッファ内のオブジェクト・コードが転送されます       (注:リロケーションは指定されたエリアにブロック転送を行なうので        バイアス値が指定された場合、プログラムの実行は不可能)。     バイアス値を指定せずに[CR]のみ入力すれば、     バイアス0として転送します。     また、16進数以外を入力すればパラメータ・エラーとなります。     転送が終了するとモニタに制御が移ります。     コマンドの終了は[BREAK]キー入力、     “Buffer Full”のメッセージ出力、     およびバイアス値入力時のパラメータ・エラーなどの場合です。  (4)ラベル・テーブル出力 >AT:〔P1〔,P2〕〕[CR]     二重定義ラベルのチェックを行ない、     ラベル・テーブル・リストを出力します。     “EXC/Mult Label CK” のメッセージを出力し、     二重定義ラベルのチェックが開始されたことを知らせます。     二重定義ラベルがあると下記の形式で表示されます。      *****          5 同一ラベルのあるステートメント番号         10        247      *****         10        247      *****         14        123     次にラベル・テーブル・リストがラベル文字の上昇順に出力されます。     7文字以上のラベルは6文字までが出力されます。     [SPACE]キーを入力すればラベル出力は一時停止となり、     [SPACE]キーの再入力で再開されます。     コマンドの終了は[BREAK]キー入力     (ただし、二重定義ラベル・チェック中は無効)、     およびラベル・テーブル出力終了時です。 3.2.4オブジェクト・プログラム・ロード・コマンド  コマンド形式 >O:〔Pa〕[CR]  AWコマンドで作成されたオブジェクト・プログラム・テープを読み込みます。  Paは16進数で入力し(下位4桁が有効)ロード・バイアスを指定します。  Paを省略すれば、ロード・バイアスは0となります。  ロード・バイアスはオブジェクト・テープのもつ格納アドレスに加算され  実際の格納アドレスを指定します。  たとえば0000H〜3FFFHで実行させるプログラムは  直接ロードできないので4000H番地以後に本コマンドでロード後、  ブロック転送をしてください。  コマンドの終了は[BREAK]キー入力  (このとき“MT Read Err”のメッセージ出力)、  カセット・テープのリード・エラー発生、およびロード終了時などの場合です。 3.2.5 ブレーク・ポインタ関連コマンド  ブレークはブレーク・ポイント・アドレスにリスタート命令を書き込み、  このリスタート命令の実行により行ないます。  どのリスタート命令を使用するかはBIコマンドで行ないますが  各リスタート命令の処理は以下のとおりです。   RST 00、08       モニタのコールド・スタート   RST 10          モニタのホット・スタート   RST 18、20、28、30 Z80 CPUの全レジスタ値を表示し                   EDASのコマンド待ちとなる。   RST 38          モニタのレジスタ表示機能  デバッグを行なうプログラムの起動はモニタのJコマンドで行なってください。  (1)ブレーク命令指定  >BI:〔Pi〕[CR]     ブレーク命令としてどのリスタート(RST)命令を使うかを指定します。     PiはRST命令のエントリ・アドレスを     16進数(下位2桁が有効)で入力します。     Piを省略すれば、0が入力されたと解釈されます。     16進数以外の入力および誤ったエントリ・アドレスの入力は     パラメータ・エラーになります。     本コマンドを投入しなければ     EDASのコールド・スタート時 RST 30Hが設定されています。  (2)ブレーク・アドレス指定  >BS: Pa[CR]     ブレーク・ポイント・アドレスを指定します。     Paは16進数で入力し、下位4桁が有効です。     最大10個所まで指定できます。     16進数以外の入力、0番地の設定はパラメータ・エラーとなります。  (3)ブレーク・アドレス取り消し >BR: Pa[CR]     設定済みブレーク・ポイント・アドレスを取り消します。     Paは16進数で入力し、下位4桁が有効です。     16進数以外の入力、未設定のアドレス指定の場合は     パラメータ・エラーになります。  (4)ブレーク・ポイント・アドレス表示 >BD[CR]     設定済みブレーク・ポイント・アドレスをすべて表示します。 ===================   4. 参   考 ===================  カセット・テープの記録方式は1,200BPSのカンザス方式です。  下記のように変更すれば600BPSとなりますので、  PC−8001用のEDASとソース・プログラム・テープ、  オブジェクト・プログラム・テープの互換性があります。   ・――――――――――――――――・   | アドレス |1200BPS | 600BPS |   |――――――+――――+――――|   | 2136H| 01H| 02H|   | 215EH| 0AH| 02H|   | 2160H| 01H| 03H|   | 216CH| 04H| 08H|   | 2203H| 01H| 02H|   | 224DH| 02H| 04H|   ・――――――――――――――――・ メモリ・マップ  0000 ・――――――――――・     |モニタ       |     | (SB−1520)   |  12A0 |――――――――――|     |EDAS      |※EDASはBASICエリアと同じであるので     |(ワーク・エリア  | BASICの実行は不可能     | を含む)     |  3500 |――――――――――|     |バッファ・エリア  |※バッファ・エリアはEDAS起動時の     |          | 指定により変更できる。     |ソース・プログラム | 本図は最大指定可能エリアを指す。     |ラベル・テーブル  |     |オブジェクト・コード|     |          |          ||     |          |     |          |  FBFF |――――――――――|     |スタック・エリア  |  FFFF ・――――――――――・